1. Field of the Invention
The present invention relates to a semiconductor storage device with a nonvolatile semiconductor memory.
2. Description of the Related Art
Like a NAND type flash memory, a nonvolatile semiconductor memory has a type which, when data is stored therein, once erases data in units called a block and thereafter to perform writing, a type which performs reading and writing in units called a page, and a type in which a unit of erasing, reading, and writing is specified.
On the other hand, a unit, which is used when a host apparatus such as a personal computer performs reading and writing of data from and to a secondary storage device such as a hard disk drive, is called a sector. The sector is determined independently from a unit of erasing, reading, and writing in the nonvolatile semiconductor memory.
For example, whereas a size of a block unit (a block size) in the nonvolatile semiconductor memory is 512 kB and a size of a page unit (a page size) is 4 kB, a size of a sector unit (a sector size) in the host apparatus is 512 B.
In this way, in some cases, the unit of erasing, reading, and writing in the nonvolatile semiconductor memory may be larger than the unit of reading and writing in the host apparatus.
Therefore, when the secondary storage device such as a hard disk drive in a personal computer is comprised using the nonvolatile semiconductor memory, data of the sector size from the personal computer as the host apparatus is required to be conformed to the block size and the page size of the nonvolatile semiconductor memory, and thus, to be written therein.
On the other hand, a flash memory, for example a NAND type flash memory, has characteristics in which the deterioration of memory cells is progressed in accordance with the increasing of the erasing count of the block, which is performed prior to writing of data. And therefore, a process called wear leveling is performed for uniformly distributing data updating positions in the nonvolatile semiconductor memory so that erasing counts of all memory cells in the nonvolatile semiconductor memory become substantially the same.
For example, a logical address of the secondary storage device designated by the host apparatus is translated into a physical address of a nonvolatile semiconductor memory representing the data updating position, whereby the data updating positions are uniformly distributed.
On the other hand, when the above address translation is performed in a large-capacity secondary storage device, if the unit of data management is a small size (for example, a page size), the correspondence list (address translation table or management table) between the logical address and the physical address is enlarged. As a result, the correspondence list does not fit in a main memory of a controller in the secondary storage device, whereby there arises a problem that the address translation cannot be performed at high speed. Therefore, the unit of data management in the secondary storage device is required to have a larger size than a page size, such as a block size.
In order to solve the above problem, there has been known a technique in which another block called a log block is provided so as to correspond to a block (data block) with data stored therein (see Jpn. Pat. Appln KOKAI Publication No. 2002-366423, for example).
In the above technique, data is written in an empty page in the log block, and when there is no empty page in the log block, or when there is not enough log block area, the data stored in the log block is reflected to the data block to improve the writing efficiency.
However, the above technique has a problem that since the data block and the log block have one-to-one correspondences, the number of blocks capable of being simultaneously updated is limited to the number of log blocks.
Namely, when the data of a small size is written in a large number of blocks, the data reflection processing is performed in the state that there are a large number of empty pages in the log block, whereby the writing efficiency is not improved.
In addition, in order to suppress the erasing count of the block, data is sometimes managed in units of the page size smaller than the block size, and the superseding data of the page size may be appended (additionally written) to another erased block.
In this case, since the superseding data of the page size is written in another block, the old data originally stored becomes invalid data. However, when valid data exists in a block including the invalid data, data in the block cannot be erased for reuse.
This is because, the erasing is required to be performed in the block unit, and therefore, when the valid data is stored in the same block, for the purpose of preventing erasing of the valid data, data in the block cannot be erased until the valid data is rewritten in another block.
The existence of the invalid data requires larger storage areas in the nonvolatile semiconductor memory than the amount of the valid data.
However, if the updating of the data progresses in the secondary storage device, the amount of the invalid data increases. And therefore, the data capacity including the invalid data and the valid data becomes large. As a result, these data may not be able to be stored in the storage area in the nonvolatile semiconductor memory.
For the purpose of deleting the invalid data, the process (compaction) in which the valid data collected from blocks is rewritten to an unused block is executed (see Jpn. Pat. Appln KOKAI Publication No. 2005-222550, for example).